#pragma once

#include "SenetPlayer.h"
#include "Expectimax.h"

class ExpectimaxPlayer : public SenetPlayerExt
{

public:
	/************************************************************************/
	/* Constructor                                                           */
	/************************************************************************/
	ExpectimaxPlayer(
		Definitions::PlayerColor playerColor,
		const GameTimer::TimeParams &tp,
		int moves_limit);

	/************************************************************************/
	/* Destructor                                                           */
	/************************************************************************/
	~ExpectimaxPlayer();

	// Evaluates the current board and select a move
	// places the selected move in myMove
	void makeMove(const Board& curBoard, Move &myMove);

	void initGame(int num_squares, int num_pieces, 
		int num_sticks, const SenetBoard &initial_board);

	void initHeurisitc(float* heuristicsParams);

	// Sets m_myName to s
	void setName(const string &s);

	// TODO: Remove this
	void overrideSticksDepth(int sticksResult, int depth, bool status)
	{
		m_sticksResult = sticksResult;
		m_depth = depth;
		m_overrideStatus = status;
	}
	int m_sticksResult;
	int m_depth;
	int m_overrideStatus;

	// TODO: REMOTE THIS (DONT REMOTE The algorithm you idiot
	Expectimax m_algorithm;			//the expectimax algorithm
	
	

private:
//	Expectimax m_algorithm;			//the expectimax algorithm
	GameTimer m_timer;				//timer 

};